/* 反转每对括号间的子串
* 给出一个字符串s（仅含有小写英文字母和括号）。请你按照从括号内到外的顺序，逐层反转每对匹配括号中的字符串，并返回最终的结果。
* 注意，您的结果中 不应 包含任何括号。
*
* 输入：s = "(abcd)"
* 输出："dcba"
*
* 输入：s = "(u(love)i)"
* 输出："iloveu"
**/

package Leetcode;

import java.util.Stack;

public class leetcode1190 {

    public static void main(String[] args) {

        leetcode1190 obj = new leetcode1190();
        String s = "(abcd)";
        System.out.println(obj.reverseParentheses(s));
    }

    public String reverseParentheses(String s){

        int len = s.length();
        Stack<Character> stack = new Stack<Character>();
        StringBuilder str = new StringBuilder();
        for (int i = 0;i < len;i++){

            if (s.charAt(i) == ')'){
                str.delete(0, str.length());
                while (stack.peek() != '('){
                    str.append(stack.pop());
                }
                stack.pop();
                for (int j = 0;j < str.length();j++){
                    stack.push(str.charAt(j));
                }
            }else{
                stack.push(s.charAt(i));
            }
        }
        str.delete(0, str.length());
        int n = stack.size();
        for (int i = 0;i < n;i++){
            str.append(stack.pop());
        }
        return str.reverse().toString();
    }
}
